<?php
require_once("constantesMvial.php");
require_once("specialCategoryCredits.php");
require_once("dineroMailData.php");
/***
Functions are all Copyrigth(c) 2006/2007, FDV Solutions

if ($_REQUEST["te"])
	$_SESSION["de"]=1;
	
if (!$_SESSION["de"])
	$set_demo=1; // demo-mode
****/

function getCategoriasVentas()
{
	return getCategorias(ID_CAT_COMPRA);
}

function getCategoriasAlquiler() {
	return getCategorias(ID_CAT_ALQUILER);
}

function getCategoriasServicios() {
	return getCategorias(ID_CAT_SERVICIOS);
}

function getProvincias($selected = null){
	$sql = "select nombre,id from provincia order by id_pais DESC,nombre";
	$lRes=q($sql);
	while ($row_cat = mysql_fetch_array($lRes))
	{
	
		$string.="<option value='$row_cat[nombre]'";
		if($selected!=null && ($row_cat[id]==$selected || $row_cat[nombre]==$selected ))
		{	$string.=' selected="selected" '; }
		$lCatName="";
		$lCatName = $row_cat["nombre"]; // Last resort, use original name..
		
		$string.=">" .$lCatName . "";	
		$string.="</option>";
	}	
	return $string;
}

function getCategorias($catFather)
{
	global $cat_tbl,$set_multilang_cat,$set_language,$set_cat_sort;
	
	if ($catFather == null or $catFather == "")
	return "";
	
	$sql = "select * from mvial_category where cat_fatherid = $catFather  order by cat_name"; //order_number,
	$lRes=q($sql);
	while ($row_cat = mysql_fetch_array($lRes))
	{
	
		$string.="<option value='$row_cat[cat_id]'";
		$lCatName="";
		$lCatName = $row_cat["cat_name"]; // Last resort, use original name..
		
		$string.=">" .$lCatName . "";	
		$string.="</option>";
	}
	
	return $string;
}

/**
Devuelve un ResultSet con id_marca, marca
**/
function getMarcasByTipoRS($catId){
	$sql = "select marca, id_marca from marca m, tipo_marca tm where 
			m.id = tm.id_marca and tm.cat_id = $catId order by m.marca";
	$lRes=q($sql);
	return $lRes;
}

/**
devuelve elementos <option>...</option>
*/
function getMarcasByTipo($catId){

	if ($catId == null or $catId == "")
	return "";
	
	$lRes = getMarcasByTipoRS($catId);

	while ($row_cat = mysql_fetch_array($lRes))
	{
	
		$string.="<option value='$row_cat[id_marca]'";
		$lCatName="";
		$lCatName = $row_cat["marca"]; // Last resort, use original name..
		
		$string.=">" .$lCatName . "";	
		$string.="</option>";
	}
	
	return $string;

}

function getMarcasByTipo2($catId){

	if ($catId == null or $catId == "")
	return "";
	
	$lRes = getMarcasByTipoRS($catId);

	while ($row_cat = mysql_fetch_array($lRes))
	{
	
		$string.="<option value='$row_cat[marca]'";
		$lCatName="";
		$lCatName = $row_cat["marca"]; // Last resort, use original name..
		
		$string.=">" .$lCatName . "";	
		$string.="</option>";
	}
	
	return $string;

}
//JMR: getMarcas para un mercado dado, pero obtenido a partir del TIPO
function getMarcasByMercadoUsingTipoRS($catId)
{
	$sql = " SELECT m.marca,m.id,cm.order_number FROM marca m INNER JOIN cat_marca cm ON m.id=cm.id_marca ".
			" where cm.cat_id in (select cat_fatherid from mvial_category where cat_id=$catId)".
			" order by cm.order_number, m.marca";
	$lRes=q($sql);
	return $lRes;
}

//JMR: added for issue MV-10
function getMarcasByMercadoRS($catId){
	$sql = "SELECT m.marca,m.id,cm.order_number " .
			"FROM marca m INNER JOIN cat_marca cm ON m.id=cm.id_marca " .
			"where cm.cat_id=$catId order by cm.order_number, m.marca";
			
	$lRes=q($sql);
	return $lRes;
}

function getModelosByMarca($idMarca){	
	$sql = "SELECT m.id,m.modelo FROM modelo m where m.id_marca=$idMarca order by m.modelo";			
	$lRes=q($sql);
	return arrayAsOptions($lRes,"id","modelo");
}

function arrayAsOptions($lRes,$id,$name,$selected = null)
{
	$flag = 0;
	while ($row_cat = mysql_fetch_array($lRes))
	{
		if($flag == 0 && $row_cat["order_number"]=='99')
		{
			$string.= "<option> -------- </option>";
			$flag = 1;
		}
		$str_selected="";
		
		if($selected != null){
			if(is_numeric($selected)){
				if($selected==$row_cat[$id])
				{
					$str_selected='selected="selected"';
				}
			}else{
				if($row_cat[$id]==MV_OTHER_BRAND)
				{
					$str_selected='selected="selected"';
				}
			}
		}
		$string.="<option value=".$row_cat[$id]." ".$str_selected;
		$lCatName="";
		$lCatName = $row_cat[$name]; 
		
		$string.=">" .$lCatName;	
		$string.="</option>";
		
	}
	return $string;
}

//JMR: added for issue MV-10
function getMarcasByMercado($catId,$selected=null){

	if ($catId == null or $catId == "")
		return "";
	
	$lRes = getMarcasByMercadoRS($catId);	
	return arrayAsOptions($lRes,"id","marca",$selected);
}

//JMR: funcion para agregar las categorias a los sialogos de Alta de Articulo
function getMarcasByMercadoUsingTipo($catId,$selected){

if ($catId == null or $catId == "")
	return "";	
			
	$lRes = getMarcasByMercadoUsingTipoRS($catId);
	return arrayAsOptions($lRes,"id","marca",$selected);	
	
}

/**
**/
function getMarcasByTipoJson($catId){
	if ($catId == null or $catId == "")
		return "";
	
	$lRes = getMarcasByTipoRS($catId);	
	$Array = array();
	$counter = 0;
	while ($row_cat = mysql_fetch_array($lRes))
	{
		$Array[$counter]["id"] = $row_cat["id_marca"];
		$Array[$counter]["marca"] = $row_cat["marca"];		
		$counter++;
	}	
	
	return json_encode($Array);
}

/**
**/
function getModelosByTipoYMarca($tipo, $marca){
	if ($tipo == null or $tipo == "")
	return "";
	
	if ($marca == null or $marca == "")
	return "";	
	
	$sql = "select t.*, mo.id, mo.modelo from tipo_marca t, modelo mo 
			where 
				t.id_marca = mo.id_marca 
				and  t.id_marca = $marca
				and t.cat_id = $tipo
			order by modelo";
	$lRes=q($sql);
	while ($row_cat = mysql_fetch_array($lRes))
	{
	
		$string.="<option value='$row_cat[id]'";
		$lCatName="";
		$lCatName = $row_cat["modelo"]; // Last resort, use original name..
		
		$string.=">" .$lCatName . "";	
		$string.="</option>";
	}
	
	return $string;
}

function getModelosByTipoYMarca2($tipo, $marca){
	if ($tipo == null or $tipo == "")
	return "";
	
	if ($marca == null or $marca == "")
	return "";	
	
	$sql = "select t.*, mo.id, mo.modelo from tipo_marca t, modelo mo 
			where 
				t.id_marca = mo.id_marca 
				and  t.id_marca = $marca
				and t.cat_id = $tipo
			order by modelo";
	$lRes=q($sql);
	while ($row_cat = mysql_fetch_array($lRes))
	{
	
		$string.="<option value='$row_cat[modelo]'";
		$lCatName="";
		$lCatName = $row_cat["modelo"]; // Last resort, use original name..
		
		$string.=">" .$lCatName . "";	
		$string.="</option>";
	}
	
	return $string;
}

/**
**/
function getModelosByTipoYMarcaJson($tipo, $marca){
	if ($tipo == null or $tipo == "")
	return "";
	
	if ($marca == null or $marca == "")
	return "";	
	
	$sql = "select t.*, mo.id, mo.modelo from tipo_marca t, modelo mo 
			where 
				t.id_marca = mo.id_marca 
				and  t.id_marca = $marca
				and t.cat_id = $tipo
			order by modelo";
	$lRes=q($sql);
	$Array = array();
	$counter = 0;	
	while ($row_cat = mysql_fetch_array($lRes))
	{
		$Array[$counter]["id"] = $row_cat["id"];
		$Array[$counter]["modelo"] = $row_cat["modelo"];		
		$counter++;
	}	
	
	return json_encode($Array);
}

/***

***/
function getLocalidadJson($localidad, $provincia){
	if ($localidad == null or $localidad == "")
		return "";
		
	$localidad =  strtoupper( $localidad. "%");
	$localidad_all =  strtoupper( "%" . $localidad. "%");
	
	$provCond = "";
	
	if ($provincia != null and $provincia != "")
		$provCond = " and provincia = '$provincia' ";
	

	$sql = "select * from (
				SELECT id, localidad, depto, provincia, localidad_full 
				FROM localidad_geo WHERE localidad like '$localidad' $provCond
				order by localidad
			) as a
			UNION 
			select * from (
				SELECT id, localidad, depto, provincia, localidad_full 
				FROM localidad_geo WHERE localidad like '$localidad_all' $provCond
				order by localidad
			) as b";
			
			
	$lRes=q($sql);
	$Array = array();
	$counter = 0;	
	while ($row_cat = mysql_fetch_array($lRes))
	{
		$Array[$counter]["id"] = $row_cat["id"];
		$Array[$counter]["localidad"] = $row_cat["localidad"];		
		$Array[$counter]["depto"] = $row_cat["depto"];		
		$Array[$counter]["provincia"] = $row_cat["provincia"];		
		$Array[$counter]["localidad_full"] = $row_cat["localidad_full"];		
		$counter++;
	}	
	
	return json_encode($Array);
}


function getMonedaOptions($moneda){
	$monedas = array("\$AR","U\$S","&euro;");
	$ret = "";
	foreach($monedas as $mone) {
    	$sel = "";
		
		if ($mone == $moneda)
			$sel = "selected='selected'";
			
		$ret = $ret . "<option value='$mone' $sel>$mone</option>\n";
		
    }

	return $ret;	
}

function getLocalidadFullById($idLocalidad){
	if ($idLocalidad == null or $idLocalidad == "")
		return null;
	
	$sql = "select localidad_full from localidad_geo where id = $idLocalidad";
	$lRes=q($sql);
	$ret = "";
	while ($row_cat = mysql_fetch_array($lRes))
	{
		$ret = $row_cat["localidad_full"];
	}	
	
	return $ret;
}

//JMR funcion creada para generar el PATH de categorias (pedido por cliente)
function getCategoryPath($catid){

	if(empty($catid) || !is_numeric($catid)) return "";
	//$query="SELECT concat(COALESCE(concat(m3.cat_name,' > '),''),COALESCE(concat(m2.cat_name,' > '),''),COALESCE(m1.cat_name,'')) as Categoria FROM mvial_category m1 left join mvial_category m2 On m1.cat_fatherid=m2.cat_id left join mvial_category m3 On m2.cat_fatherid=m3.cat_id where m1.cat_id=$catid  LIMIT 1";
	$query = "SELECT m3.cat_name AS categoria1, m3.cat_id AS categoria1Id, m3.cat_fatherid AS categoria1FatherId, m2.cat_name AS categoria2, m2.cat_id AS categoria2Id, m2.cat_fatherid AS categoria2FatherId, m1.cat_name AS categoria3, m1.cat_id AS categoria3Id, m1.cat_fatherid AS categoria3FatherId, CONCAT(COALESCE(CONCAT(m3.cat_name,' > '),''),COALESCE(CONCAT(m2.cat_name,' > '),''),COALESCE(m1.cat_name,'')) AS Categoria FROM mvial_category m1 LEFT JOIN mvial_category m2 ON m1.cat_fatherid=m2.cat_id LEFT JOIN mvial_category m3 ON m2.cat_fatherid=m3.cat_id WHERE m1.cat_id=$catid LIMIT 1";
	$lRes=q($query);
	if($row_cat = mysql_fetch_array($lRes)){
		
		$nivel = 0;
		for ($i = 1; $i <= 3; $i++) {
			$j = $i - 1;
			if($row_cat["categoria".$i ."Id"] != "") {
				$nivel = $nivel + 1;
				if($link == "") {
					$link = ' <a href="/'.guiones($row_cat["categoria".$i]).'" class="linksred">' . $row_cat["categoria".$i] . '</a>';
					$link = $row_cat["categoria".$i];
				} else {
					if($nivel == 2) $link .= ' > <a href="/'.$row_cat["categoria".$i."Id"] . "-" . guiones($row_cat["categoria".$i]).'" class="linksred">' . $row_cat["categoria".$i] . '</a>';
					if($nivel == 3) $link .= ' > <a href="/'.guiones($row_cat["categoria".$j]) . '/' . $row_cat["categoria".$i."Id"] . "-" . guiones($row_cat["categoria".$i]).'" class="linksred">' . $row_cat["categoria".$i] . '</a>';
				}
			}
		}
		//return str_replace("Venta", "Compra", $row_cat["Categoria"]);
		//return $row_cat["Categoria"];
		return $link;
	}
	return "";
}

function elimina_acentos($text){
		$text=str_replace('"','',$text);
		$text=str_replace('\'','',$text);
		$text=str_replace('<','',$text);
		$text=str_replace('>','',$text);		
		$text = htmlentities($text, ENT_QUOTES, 'UTF-8');	
		$text = strtolower($text);
		$patron = array (
			// Espacios, puntos y comas por guion
			//'/[\.;:,]+/' => '',
			
			// Vocales
			'/&agrave;/' => 'a',
			'/&egrave;/' => 'e',
			'/&igrave;/' => 'i',
			'/&ograve;/' => 'o',
			'/&ugrave;/' => 'u',
			
			'/&aacute;/' => 'a',
			'/&eacute;/' => 'e',
			'/&iacute;/' => 'i',
			'/&oacute;/' => 'o',
			'/&uacute;/' => 'u',
			
			'/&acirc;/' => 'a',
			'/&ecirc;/' => 'e',
			'/&icirc;/' => 'i',
			'/&ocirc;/' => 'o',
			'/&ucirc;/' => 'u',
			
			'/&atilde;/' => 'a',
			'/&etilde;/' => 'e',
			'/&itilde;/' => 'i',
			'/&otilde;/' => 'o',
			'/&utilde;/' => 'u',
			
			'/&auml;/' => 'a',
			'/&euml;/' => 'e',
			'/&iuml;/' => 'i',
			'/&ouml;/' => 'o',
			'/&uuml;/' => 'u',
			
			'/&auml;/' => 'a',
			'/&euml;/' => 'e',
			'/&iuml;/' => 'i',
			'/&ouml;/' => 'o',
			'/&uuml;/' => 'u',
			
			// Otras letras y caracteres especiales
			'/&aring;/' => 'a',
			'/&ntilde;/' => 'n',
			'/&raquo;/' => '',
			'/&laquo;/' => ''
			// Agregar aqui mas caracteres si es necesario
 
		);
		
		$text = preg_replace(array_keys($patron),array_values($patron),$text);
		return $text;
}

function caracteres_html($texto){
      $texto = htmlentities($texto, ENT_NOQUOTES); // Convertir caracteres especiales a entidades
      $texto = htmlspecialchars_decode($texto, ENT_NOQUOTES); // Dejar <, & y > como estaban
      return $texto;
} 

/*
 * Esta funcion reemplaza linKCat de functions,simplemente genera un link agregando un paramtro extra, se utiliza para
 * egenerar el link de las categorias y subcategorias del front.
 * */
function mvialLinkCat($aId)
{
	global $set_rewrite,$set_link_cat;
	
	if ($set_rewrite=="1")
		return ereg_replace("\(n\)","$aId","$set_link_cat");
	else 
		return "index.php?catid=" . $aId."&redirecttipo=1";
}

/**
 * A partir del ID de categoria devuelve el ID de tipo de Operacion:
 * Compra, Venta o Servicios si CatId es NULL o no puede obtener el tipo de la abase devuelve el id de "COMPRA"
 * $esCatMercado : parametro de out. Será "true" sí la categoria pasada corresponde a una categoria de mercado, ej: "Mercado Vial"
 * */
function getTipoDeOperacion($catId){
	
	if(empty($catId) || !is_numeric($catId)) return ID_CAT_COMPRA;
	$query="SELECT COALESCE(m3.cat_id,COALESCE(m2.cat_id)) as Categoria FROM mvial_category m1 left join mvial_category m2 On m1.cat_fatherid=m2.cat_id left join mvial_category m3 On m2.cat_fatherid=m3.cat_id where m1.cat_id=$catId  LIMIT 1";
	$lRes=q($query);
	if($row_cat = mysql_fetch_array($lRes)){
		return $row_cat["Categoria"];
	}
	return ID_CAT_COMPRA;	
}

/*
 * Similar a la anterior solo que devuleve un array de dos valores:
 * "operacio"=>ID_TIPO_OPERACION
 * "mercado"=> true/false (si la categoria pasada corresponde a un mercado, ejemplo: "mercado Vial")
 * */
function getTipoDeOperacionyMercado($catId){
	$return = array();
	$return["operacion"]=ID_CAT_COMPRA;
	$return["mercado"]=false;
	if(empty($catId) || !is_numeric($catId)) return $return;
	//isMercado: si es 1 : si es una categoria intermedia y Si es intermedia y Categoria no es SERVICIOS. Estamos en un "Mercado" (panatlla CONOS)
	$query="SELECT COALESCE(m3.cat_id,COALESCE(m2.cat_id)) as Categoria, isNULL(m3.cat_id) as isMercado FROM mvial_category m1 left join mvial_category m2 On m1.cat_fatherid=m2.cat_id left join mvial_category m3 On m2.cat_fatherid=m3.cat_id where m1.cat_id=$catId  LIMIT 1";	
	$lRes=q($query);
	if($row_cat = mysql_fetch_array($lRes)){
		if($row_cat["Categoria"]!=ID_CAT_SERVICIOS && $row_cat["isMercado"]==1){
				$return["mercado"]=true;
		}
		$return["operacion"]=$row_cat["Categoria"];	
	}
	return $return;	
	
}
/*
 * Esta funcion determina el "mainType" de un paquete de avisos, segun el catId (Es decir determina el tipo de credito que se necesita para
 * un determinado tipo de producto)
 * */
function getPaqueteMainType($catId){

	global $paquetesEspeciales;	
	if(empty($catId) || !is_numeric($catId)) return ID_CAT_COMPRA;
	if(isset($paquetesEspeciales[$catId]) && !empty($paquetesEspeciales[$catId])) return $paquetesEspeciales[$catId]; 
	return getTipoDeOperacion($catId);
	
}

/*JMR: Esta función es similar a la anterior pero en vez de recibir la categoria utiliza el ID de aviso
 * params:
 * 	$adid: id del aviso
 * $returnPID : parametro opcional, boleano indica si se quiere tambein el parametro "Package ID" de ser true
 * la funcion devolverá un array con dos valores 'mainType' y 'package_id' 
 ***************/
function getPaqueteMainTypeFromAdId($adId,$returnPID = false){
	
	global $paquetesEspeciales;
	$array = array();
	if(empty($adId) || !is_numeric($adId)) return ID_CAT_COMPRA;
	$sql="SELECT COALESCE(m3.cat_id,COALESCE(m2.cat_id)) as mainType,ah2.ad_cat_id as cat_id, mveo.mv_package_id  FROM mvial_category m1 inner join mvial_ad ah2 ";
	$sql.="on m1.cat_id=ah2.ad_cat_id inner join  mvial_ad_extra_options mveo on ah2.ad_id = mveo.mv_ad_id left join mvial_category m2 On m1.cat_fatherid=m2.cat_id left join mvial_category ";
	$sql.="m3 On m2.cat_fatherid=m3.cat_id where ah2.ad_id=$adId  LIMIT 1";
	
	$lRes=q($sql);
	if($row_cat = mysql_fetch_array($lRes)){
		 $catId   =$row_cat["cat_id"];
		 $array['mainType']   = $row_cat["mainType"];
		 $array['package_id'] = $row_cat["mv_package_id"];
	}
	if(isset($paquetesEspeciales[$catId]) && !empty($paquetesEspeciales[$catId])){
		 $array['mainType'] = $paquetesEspeciales[$catId];
	}
	if($returnPID){
		return $array;
	}else{		
		return  $array['mainType'];
	}
	
}
/*Obtiene el extra mainType: Es decir el mainType para paquetes Extra (no de avisos) de 
 * un tipo de operacion dada por el MainType: 1000(compra),1001(venta) 
 * */
function getExtraMainType($maintype){
	
	switch ($maintype){
		case 0:	   return ID_CAT_COMPRA_AUX;
		case ID_CAT_COMPRA:	   return ID_CAT_COMPRA_AUX;
		case ID_CAT_ALQUILER:  return ID_CAT_ALQUILER_AUX;
		case ID_CAT_SERVICIOS: return ID_CAT_SERVICIOS_AUX;			
	}
	
}

/*
 * en base al mainType devuelve el tipo de anunciante: "Vendedor" // "Rentador" // "Anunciante"
 * */
function getTipoAnunciante($mainType){
	
	switch ($mainType){
		case 0:				   return MAINTYPE_VENTA_USER;
		case ID_CAT_COMPRA:	   return MAINTYPE_VENTA_USER;
		case ID_CAT_ALQUILER:  return MAINTYPE_ALQUILER_USER;
		case ID_CAT_SERVICIOS: return MAINTYPE_SERVICIOS_USER;			
		case -1: return MAINTYPE_SERVICIOS_USER;
	}
	
}

function isExtraMainType($mainType){
	switch ($mainType){		
		case ID_CAT_COMPRA_AUX:	   return true;
		case ID_CAT_ALQUILER_AUX:  return true;
		case ID_CAT_SERVICIOS_AUX: return true;
		default: return false;			
	}	
}

/*
 * JMR: variable extra de Session,
 * */
function refreshSession(){
	session_start();
	if (($_SESSION['hora']+1200) > time())
	{
		session_unset();
		session_destroy();	
	}
	else
	{
		$_SESSION['hora']=time();
	}	
}

function obtenerCreditosExistentesPorCategoria($mainType,$userId,$packageId = -1){
	
	$query="SELECT user_id, pay_membership_expire, coalesce(pay_credits,0) as pay_credits, pay_bold, pay_num_images, pay_upload, pay_wysiwyg,
    		pay_vendor, pay_premium, pay_upload_video, mainType FROM mvial_user_credits where user_id=".$userId." and mainType=".$mainType;
	
	if($packageId!=-1){
		$query.=" and package_id = ".$packageId;
	}
		 	
	$lRes=q($query);
	$payCredits = 0;
	while($row_cat = mysql_fetch_array($lRes)){
		$payCredits = $payCredits + $row_cat["pay_credits"];
	}
	return $payCredits;
}
/*
 * @return value: -1 si no habia creditos disponibles, 0 si sí habia
 * */
function habilitarAvisosDisabled($mainType,$userId,$packageId=0){
			
	$ids= array();
	$query="SELECT coalesce(pay_credits,0) as pay_credits, 
				   coalesce(pay_bold,0) as pay_bold,				    
    		       coalesce(pay_premium,0) as pay_premium, package_id
    		       FROM mvial_user_credits where user_id=".$userId." and mainType=".$mainType." and package_id=".$packageId;	
	$lRes=q($query);
	
	if($row_cat = mysql_fetch_array($lRes)){
		 $arrayOfCredits = array(
		 	'package_id' => $row_cat["package_id"], 
		 	'pay_credits' => $row_cat["pay_credits"],
		 	'pay_bold' => $row_cat["pay_bold"],
		 	'pay_premium' => $row_cat["pay_premium"]
		 );
	}else{
		return -1;
	}
	if($arrayOfCredits['pay_credits']<1) return -1; //no hay creditos así que ni siquiera vemos los avisos
	$query2=" SELECT `ad_id`,ad_is_special,ad_is_premium,ad_cat_id,mv_package_id,pdur from mvial_ad a inner join ".
	        "mvial_ad_extra_options b on a.ad_id=b.mv_ad_id inner join mvial_packages c on c.pid=b.mv_package_id ".
	        "where ad_owner=".$userId." and ad_enabled=0 and mv_package_id =".$packageId."  order by ad_id ASC ";
	$lRes2=q($query2);
	while($row = mysql_fetch_array($lRes2)){
		
		if($arrayOfCredits['pay_credits']<1) break;
		else{
			$arrayOfCredits['pay_credits']--;
		}
		$lExpireDate=addDaysToTimeStamp($row['pdur'],time());
		q(" update mvial_ad m SET ad_enabled=1, ad_is_validated=1, ad_date_expire=$lExpireDate where ad_id=".$row['ad_id']);
		$ids[]=array("newId" => $row['ad_id'], "catId" =>$row['ad_cat_id'] ) ;
		
	}
	/**********************************************************************/	
	
	//Actualizamos los creditos consumidos	
	$sql3="update mvial_user_credits set pay_credits = ".$arrayOfCredits['pay_credits'].
								",pay_bold = ".$arrayOfCredits['pay_bold'].
								",pay_premium = ".$arrayOfCredits['pay_premium'];
	$sql3.=" where user_id = ".$userId." and mainType=".$mainType." and package_id = ".$packageId;		
	$resUpdate=q($sql3);
	
	$idCondition='';
	foreach ($ids as $id){		
		//Actualizar el count de usuario y el category count.
		addToHistory(6,$userId,$id["newId"],"");
		userAdsCounter($userId,1);
		categoryCounter($id["catId"],1);	
	}
	return 0;
}

/*
 * Dado un file por parametro (obtenido de la base de datos) 
 * la funcion se fija si es un Thumbnail, si lo es (contiene "tmb" en el nombre) devuelve el mismo file
 * sino se fija si existe uno y lo devuelve, sino existe lo crea y actualiza la base de datos 
 * */
function returnThumbnailFromImageFile($filename){
	
	global $set_path,$pic_tbl,$set_image_program,$set_image_size_large,$set_image_size_small,$set_image_size_thumb;
	if(empty($filename)) return $filename;
	
	if(substr_count($filename,"_tmb")>0) return $filename;
	$ext = substr($filename, -3, 3);($filename);
	$fileNameThmb=eregi_replace(".".$ext,"_tmb2.".$ext,$filename);
	
	if (!file_exists("$set_path/images/$fileNameThmb")) {
				    
		    $lThumbImage=eregi_replace(".".$ext,"_tmb2.".$ext,$filename);
			$lSmallImage=eregi_replace(".".$ext,"_tmb1.".$ext,$filename);
			$lLargeImage=$filename;	
		
			if ($set_image_program=="2")
	 		{
	 			
	 			$xyArray=split("x",$set_image_size_large);
	 			$x=$xyArray[0];
	 			$y=$xyArray[1];
	 			makeGDThumb("$set_path/images/$filename","$set_path/images/$lLargeImage","jpg",$x,$y);	
	 			
	 			$xyArray=split("x",$set_image_size_small);
	 			$x=$xyArray[0];
	 			$y=$xyArray[1];
	 			makeGDThumb("$set_path/images/$filename","$set_path/images/$lSmallImage","jpg",$x,$y);	
	 			
	 			$xyArray=split("x",$set_image_size_thumb);
	 			$x=$xyArray[0];
	 			$y=$xyArray[1];
	 			makeGDThumb("$set_path/images/$filename","$set_path/images/$lThumbImage","jpg",$x,$y);	
	 			
			
	 		}
	 		else if ($set_image_program=="1")
	 		{	
	 			
				makeIMThumb("$set_path/images/$filename","$set_path/images/$lLargeImage","$set_image_size_large");
			
				makeIMThumb("$set_path/images/$filename","$set_path/images/$lSmallImage","$set_image_size_small");
				makeIMThumb("$set_path/images/$filename","$set_path/images/$lThumbImage","$set_image_size_thumb");				
	 		}
	
	}
	$sq = "UPDATE $pic_tbl set filename ='$fileNameThmb' where filename='$filename'";
   	$result = q($sq);
	return $fileNameThmb;
}
/*
 * Este metodo obtienes ordenes de compras pendientes
 * @params: userId id de Usuario
 * @return value, un array con cada una de las ordenes pendientes. Si no tiene ninguna el array vendrá vacio
 * */
function obtenerOrdenesPendientes($userId){
	
	$query="SELECT o_id,pid,o_package,o_user,o_status,o_amount,o_cantidad,pname,pterm,pprice,mainType 
	       FROM mvial_orders m inner join mvial_packages p on m.o_package=p.pid where o_user=$userId and o_status<>'Paid'";
	$result = q($query);
	$auxArray = array();
	$i=0;
	while($row = mysql_fetch_array($result)){
		$auxArray[$i]=array();
		$auxArray[$i]['orderId']   = $row['o_id']; //total adeudado
		$auxArray[$i]['packageId'] = $row['pid']; //total adeudado		
		$auxArray[$i]['totalCost'] = str_replace(",", ".",$row['o_amount']); //total adeudado
		$auxArray[$i]['packageCount'] = $row['o_cantidad'];  //cantidad de paquetes
		$auxArray[$i]['packageName'] = $row['pname'];  //cantidad de paquetes
		$auxArray[$i]['unitCost'] = $row['pprice'];  //precio x uNidad
		switch ($row['mainType']){
			case ID_CAT_COMPRA:     $auxArray[$i]['kindOfCredit'] = EF_MAINTYPE_CREDIT_VENTA;
								break;
			case ID_CAT_ALQUILER:  $auxArray[$i]['kindOfCredit'] = EF_MAINTYPE_CREDIT_ALQUILER;
								break;
			case ID_CAT_SERVICIOS: $auxArray[$i]['kindOfCredit'] = EF_MAINTYPE_CREDIT_SERVICIOS;
								break;
			case ID_CAT_COMPRA_AUX:     $auxArray[$i]['kindOfCredit'] = EF_MAINTYPE_CREDIT_VENTA_AUX;
								break;
			case ID_CAT_ALQUILER_AUX:  $auxArray[$i]['kindOfCredit'] = EF_MAINTYPE_CREDIT_ALQUILER_AUX;
								break;
			case ID_CAT_SERVICIOS_AUX: $auxArray[$i]['kindOfCredit'] = EF_MAINTYPE_CREDIT_SERVICIOS_AUX;
								break;								
			case -1:
			default: $auxArray[$i]['kindOfCredit'] = EF_MAINTYPE_CREDIT_VENTA_DES;
					 break;
		}
		$i++;
	}
	return $auxArray;
}
/*
 * Este metodo obtiene la cantidad de ordenes de compras pendientes
 * @params: userId id de Usuario
 * @return value, integer con la cantidad de ordenes
 * */
function obtenerCantidadDeOrdenesPendientes($userId){
	$result = q("SELECT count(*) as count FROM mvial_orders m where o_user=$userId and o_status<>'Paid'");
	if($row = mysql_fetch_array($result)){
		return $row['count'];
	}
}

/*
 * Esta funcion verifica la acreditacion de dinero de un usuario dado. haciendo la consulta respectiva 
 * a dineroMail
 * params: id de usuario
 * */
function verificarAcreditacionDeDinero($userId,$periodo = 7){
	$arrayResults = array();
	$hoy = date("Ymd")."";  
	$ayer= date("Ymd",mktime(0,0,0,date("m") ,date("d")-$periodo,date("Y")))."";	
	$arrayDineroMail = getDineroMailData($ayer,$hoy);
	$result = q("SELECT o_id,o_amount,o_package FROM mvial_orders m where o_user=$userId and o_status<>'Paid'");
	while($row = mysql_fetch_array($result)){
	 	if (isset($arrayDineroMail[$row['o_id']])){
	 		$pagado = (float)$arrayDineroMail[$row['o_id']];
	 		$costo  = (float)$row['o_amount'];
	 		if($pagado>=$costo){
	 			//Confirmar Orden
	 			addPackage($userId,$row['o_package'],$row['o_id']);
				completeOrder($row['o_id'],"Paid",999,$pagado.'',$row['o_package']);
	 			//End Confiermar Orden
	 			$arrayResults[$row['o_id']]=$costo;
	 		}else{
        		$arrayResults[$row['o_id']]='MENOR'; /*Se pago pero un monto menor del que se tendría que haber pagado*/
	 		}
    	}
	}
	return $arrayResults;
}

/*
 * @autor: Juan Manuel Rodriguez
 * function that cheks if a package is free
 * @return: true if the package is free else returns false
 * */
function isFreePackage($idPackage){
	$result = q("SELECT count(*) as count FROM mvial_packages m where pprice=0 and pid=".mysql_escape_string($idPackage));
	if($row = mysql_fetch_array($result)){
		if($row['count']>=1) return true;
		else return false;
	}
	return false;
}

/*
 * @author Juan Manuel Rodriguez
 * Esta función devuelve un array de dos valores "id" y "name" para un determinado tipo de Operacion para un determinado usuario
 * 
 * Estos son los paquetes que un usuario compró o está comprando.
 * */
function getUserPackages($mainType,$userId){
	
	$query = "
	SELECT p.pid,p.pname FROM mvial_orders m inner join mvial_packages p ON m.o_package=p.pid where o_status='0' and o_user=$userId  and 
	mainType=$mainType
	UNION
	SELECT coalesce(p.pid,0) as pid,coalesce(p.pname,'EF_GIF') as pname  FROM mvial_user_credits m left join mvial_packages p ON m.package_id=p.pid where user_id=$userId and pay_credits>0 and
	m.mainType=$mainType";
	
	$result = q($query);
	$array = array();
	$i = 0;
	while($row = mysql_fetch_array($result)){		
		$array[$i] = array();
		$array[$i]['pid']   = $row['pid'];
		if($row['pname'] == 'EF_GIF')
			$array[$i]['pname'] = EF_GIF;
		else	
			$array[$i]['pname'] = $row['pname'];
	  $i++;
	}
	return $array;

}
/***********************GET USER INFO **********/
/*
 * Dado un ID devuelve un array con la info de un paquete
 * */
function getUserinfoByKey($userId){
	
	$query = "SELECT m.`user_email`, 
       m.`user_name`, 
       m.`user_pass_plain`, 
       m.`user_date`, 
       m.`user_date_last_login`, 
       m.`user_newsletter`, 
       m.`user_hide_email`, 
       m.`user_num_ads`, 
       m.`user_pass_md5`, 
       m.`user_credits`, 
       m.`user_status`, 
       m.`user_verify_code`, 
       m.`user_num_login`, 
       m.`user_approved`, 
       m.`user_contacted`, 
       m.`user_vendor_homepage`, 
       m.`user_vendor_url`,
       m.`user_is_vendor`, 
       m.`user_votes`, 
       m.`user_voters`, 
       m.`user_voters_ip`, 
       m.`user_score`, 
       m.`pay_membership_expire` 
	   FROM mvial_user m WHERE m.`user_id`=".$userId." limit 1";
	
	$result = q($query);		
	if($row = mysql_fetch_array($result)){
		$array = array(
			   'user_email' 	 => $row['user_email'], 
		       'user_name' 		 => $row['user_name'],
		       'user_pass_plain' => $row['user_pass_plain'], 
		       'user_date' 		 => $row['user_date'], 
		       'user_date_last_login' => $row['user_date_last_login'], 
		       'user_newsletter' => $row['user_newsletter'],
		       'user_hide_email' => $row['user_hide_email'],
		       'user_num_ads' 	 => $row['user_num_ads'],
		       'user_pass_md5' 	 => $row['user_pass_md5'], 
		       'user_credits' 	 => $row['user_credits'],
		       'user_status' 	 => $row['user_status'],
		       'user_verify_code'=> $row['user_verify_code'], 
		       'user_num_login'  => $row['user_num_login'],
		       'user_approved'   => $row['user_approved'],
		       'user_contacted'  => $row['user_contacted'],
		       'user_vendor_homepage' => $row['user_vendor_homepage'],
		       'user_vendor_url' 	  => $row['user_vendor_url'],
		       'user_is_vendor' 	  => $row['user_is_vendor'],
		       'user_votes' 		  => $row['user_votes'],
		       'user_voters' 		  => $row['user_voters'], 
		       'user_voters_ip' 	  => $row['user_voters_ip'], 
		       'user_score' 		  => $row['user_score'],
		       'pay_membership_expire'=> $row['pay_membership_expire']  
		);
		return $array;
	}
	return array();
	
}
/********************/


/*
 * Dado un ID devuelve un array con la info de un paquete
 * */
function getPackageinfo($pid){
	
	$query = "SELECT pid,pname,pterm,pdur,pactive,pprice,pcurrency,pupload,pmessages,pchat,pgb,protation,pvisitor,pfav,pmatch,
    		  pflirts, ppremium, mainType,concesionaria, avisos FROM mvial_packages where pid=".$pid;
	//var_dump($query);
	$result = q($query);		
	if($row = mysql_fetch_array($result)){
		$array = array(
				'pid' => $row['pid'],
				'pname' => $row['pname'],
				'pterm' => $row['pterm'],
				'pdur' => $row['pdur'],
				'pactive' => $row['pactive'],
				'pprice' => $row['pprice'],
				'pcurrency' => $row['pcurrency'],
				'pupload' => $row['pupload'],
				'pmessages' => $row['pmessages'],
				'pchat' => $row['pchat'],
				'pgb' => $row['pgb'],
				'protation' => $row['protation'],
				'pvisitor' => $row['pvisitor'],
				'pfav' => $row['pfav'],
				'pmatch' => $row['pmatch'],
				'pflirts' => $row['pflirts'],
				'ppremium' => $row['ppremium'],
				'mainType' => $row['mainType'],
				'concesionaria' => $row['concesionaria'],
				'avisos' => $row['avisos']
		);
		return $array;
	}
	return array();
	
}

/**
 * Devuelve los avisos de un usuario: en un array de registros, donde cada elemento del array principal es un array con los conmbres
 * de las columnas de las distintas tablas.
 * 
 * $conditionArray = array de strings, donde cada elemento del array es una condicion para el query, ejemplo: "ad_is_premium=1" 
 * */
function getUserAds($userId,$conditionArray){
	
	$condicion = "ad_owner=$userId";
	$newArray = array(0 =>$condicion);
	foreach($conditionArray as $key => $val) {            
            $newArray[] = $val;
    }	
	return getAds($newArray); 
	
}


/**
 * Devuelve avisos en un array de registros, donde cada elemento del array principal es un array con los conmbres
 * de las columnas de las distintas tablas.
 * 
 * $conditionArray = array de strings, donde cada elemento del array es una condicion para el query, ejemplo: "ad_is_premium=1"
 * $limit = entero, si es cero trae todos
 * $orderArray = array de la forma: [0]=>( [0]=>"ad_date", [1]=> "DESC")
 * */
function getAds($conditionArray,$limit=0,$orderArray = NULL){
	
	$query = "SELECT ad_id, ad_owner, ad_cat_id, ad_title,ad_description,ad_date,ad_date_expire,ad_date_updated,ad_expires_after_days,
				    ad_owner_notified,ad_has_video,ad_has_picture,ad_has_doc,ad_views,ad_votes,ad_voters,ad_totalscore,
				    ad_last_vote_ip,ad_is_validated,ad_is_sold,ad_is_special,ad_is_premium,ad_region,ad_localidad_id,
				    ad_precio,ad_moneda,ad_provincia,ad_enabled,mv_marca,mv_modelo,mv_potencia,mv_hskms,mv_anio,
				    mv_marca_str,mv_localidad_name,mv_pais_id,mv_package_id, cat.cat_name, cat.cat_fatherid, cat.cat_grandfatherid, pr.nombre `provincia`, COALESCE(mar.marca, mv_marca_str) marca
					from mvial_ad inner join mvial_ad_extra_options on ad_id=mv_ad_id 
					              inner join mvial_category cat on mvial_ad.ad_cat_id=cat.cat_id 
					              inner join provincia pr on pr.id = mvial_ad.ad_provincia 
					              left join marca mar on mar.id = mvial_ad_extra_options.mv_marca 
					where 1=1 ";
	
	foreach ($conditionArray as $condition){
		$query .=" and ".$condition." ";
	}
		
	if(isset($orderArray) && !empty($orderArray)){
		
		$auxQueryOrder = '';
		foreach ($orderArray as $key => $subArray){
			if(!empty($auxQueryOrder)){
				$auxQueryOrder .= ", ";
			}
			$auxQueryOrder .= $subArray[0]." ".$subArray[1];
		}
		$query .=" order by ".$auxQueryOrder;
		
	}else{
		$query .=" order by ad_enabled DESC ";
	}
	if(!empty($limit) && is_numeric($limit)){
		$query .=" limit ".$limit;		
	}
	//var_dump($query);
	$result = q($query);
	$array = array();
	while($row = mysql_fetch_array($result)){
		$array[] = array(
		'ad_id' => $row['ad_id'],
		'ad_owner' => $row['ad_owner'],
		'ad_cat_id' => $row['ad_cat_id'],
		'ad_title' => $row['ad_title'],
		'ad_description' => $row['ad_description'],
		'ad_date' => $row['ad_date'],
		'ad_date_expire' => $row['ad_date_expire'],
		'ad_date_updated' => $row['ad_date_updated'],
		'ad_expires_after_days' => $row['ad_expires_after_days'],
		'ad_owner_notified' => $row['ad_owner_notified'],
		'ad_has_video' => $row['ad_has_video'],
		'ad_has_picture' => $row['ad_has_picture'],
		'ad_has_doc' => $row['ad_has_doc'],
		'ad_views' => $row['ad_views'],
		'ad_votes' => $row['ad_votes'],
		'ad_voters' => $row['ad_voters'],
		'ad_totalscore' => $row['ad_totalscore'],
		'ad_last_vote_ip' => $row['ad_last_vote_ip'],
		'ad_is_validated' => $row['ad_is_validated'],
		'ad_is_sold' => $row['ad_is_sold'],
		'ad_is_special' => $row['ad_is_special'],
		'ad_is_premium' => $row['ad_is_premium'],
		'ad_region' => $row['ad_region'],
		'ad_localidad_id' => $row['ad_localidad_id'],
		'ad_precio' => $row['ad_precio'],
		'ad_moneda' => $row['ad_moneda'],
		'ad_provincia' => $row['ad_provincia'],
		'ad_enabled' => $row['ad_enabled'],
		'mv_marca' => $row['mv_marca'],
		'mv_modelo' => $row['mv_modelo'],
		'mv_potencia' => $row['mv_potencia'],
		'mv_hskms' => $row['mv_hskms'],
		'mv_anio' => $row['mv_anio'],
		'mv_marca_str' => $row['mv_marca_str'],
		'mv_localidad_name' => $row['mv_localidad_name'],
		'mv_pais_id' => $row['mv_pais_id'],
		'mv_package_id' => $row['mv_package_id'],
		'cat_grandfatherid' => $row['cat_grandfatherid'],
		'marca' => $row['marca'],
		'provincia' => $row['provincia'],
		);			
	}
	return $array;
	
}
/*
 * Obtiene un registro de la tabla UserCredits
 * */
function getUserCreditsinfo($userId,$packageid){
	
	$query = "SELECT user_id, pay_membership_expire, pay_credits, pay_bold, pay_num_images, pay_upload, pay_wysiwyg,
			    pay_vendor,pay_premium,pay_upload_video,mainType,package_id
			    FROM mvial_user_credits where user_id = ".$userId." and package_id=".$packageid;
	$result = q($query);		
	if($row = mysql_fetch_array($result)){
		$array = array(
				'user_id' => $row['user_id'],
				'pay_membership_expire' => $row['pay_membership_expire'],
				'pay_credits' => $row['pay_credits'],
				'pay_bold' => $row['pay_bold'],
				'pay_num_images' => $row['pay_num_images'],
				'pay_upload' => $row['pay_upload'],
				'pay_wysiwyg' => $row['pay_wysiwyg'],
				'pay_vendor' => $row['pay_vendor'],
				'pay_premium' => $row['pay_premium'],
				'pay_upload_video' => $row['pay_upload_video'],
				'mainType' => $row['mainType'],
				'package_id' => $row['package_id']
		);
		return $array;
	}
	return array();
	
}

/*
 * Pasado el ID de MainType devuelve el nombre del tipo
 * */
function getMainTypeName($mainTypeId){
	@include("../admin/config/language/spa_user.inc");
	switch ($mainTypeId){
		case ID_CAT_COMPRA    : return MAINTYPE_VENTA;
		case ID_CAT_ALQUILER  :	return MAINTYPE_ALQUILER;
		case ID_CAT_SERVICIOS :	return MAINTYPE_SERVICIOS;
		case ID_CAT_COMPRA_AUX    : return EF_EXTRA_RESALTADO.' '.MAINTYPE_VENTA;
		case ID_CAT_ALQUILER_AUX  :	return EF_EXTRA_RESALTADO.' '.MAINTYPE_ALQUILER;
		case ID_CAT_SERVICIOS_AUX :	return EF_EXTRA_RESALTADO.' '.MAINTYPE_SERVICIOS;	
		case -1:
		default: return MAINTYPE_VENTA_DES;
	}
}

/**************** NEWS LETTER FUNCTIONs **************************/
/****************************************************************/

/*
 * $categoryIdArray: array donde cada registro es un ID de la categoria mostrar
 * $limit: cuantos avisos mostrar
 * $diasAntes: cantidad de días a partir de cuando mostrar avisos. Si no se especifica trae todos
 * */
function getAds4Newsletter($categoryIdArray,$limit = 15 ,$diasAntes = 0){

	$condicionFecha = "";
	$condicionCategory = "";
	//Seteo de condicion fecha
	if($diasAntes !=  0){
		$fechaBase =  mktime(date("H"), date("i"), date("s"), date("m"), date("d")-$diasAntes,date("Y"));
		$condicionFecha = " AND ad.ad_date > ".$fechaBase." ";
	}
	//seteo de condicion de categoria	
	if(!empty($categoryIdArray)){		
		foreach ($categoryIdArray as $cat){
			if(empty($condicionCategory)){
				$condicionCategory .= "AND ( cat_fatherid = ".$cat." ";
			}else
				$condicionCategory .= " OR cat_fatherid = ".$cat." ";
			
		}
			$condicionCategory .= " )";
	}
	
	$query = "SELECT
	    ad_id,
	    ad_title,
	    ad_description,
	    ad_date,
	    ad_date_expire,
	    ad_date_updated,
	    ad_expires_after_days,
	    ad_has_video,
	    ad_has_picture,
	    ad_has_doc,
	    ad_is_sold,
	    ad_is_special,
	    ad_is_premium,
	    ad_region,
	    ad_localidad_id,
	    ad_precio,
	    ad_moneda,
	    ad_provincia,
	    ad_enabled,
	    mv_marca,
	    mv_modelo,
	    mv_potencia,
	    mv_hskms,
	    mv_anio,
	    mv_marca_str,
	    mv_localidad_name,
	    mv_pais_id,
	    mv_package_id,
	    cat_id,
	    cat_fatherid,
	    cat_name,
	    cat_full_name,
	    cat_description,
	    cat_image,
	    cat_grandfatherid,
	    user_id,
	    user_email,
	    user_name,
	    user_is_vendor,
	    marca,
	    nombre as provincia	
FROM
    mvial_ad ad left join mvial_ad_extra_options ade ON ad.ad_id=ade.mv_ad_id left join marca m ON ade.mv_marca=m.id left join provincia pr ON ad.ad_provincia = pr.id inner join mvial_category cat on ad.ad_cat_id = cat.cat_id inner join mvial_user u on ad.ad_owner = u.user_id
	where ad.ad_enabled = 1 %s %s order by ad.ad_date desc limit 0,".mysql_escape_string($limit);
	
	
	$query = sprintf($query,$condicionCategory,$condicionFecha);
	$sql_resultados = q($query);
	//echo $query;
	return $sql_resultados;  

}

/**
 * Esta funcion permitite saber si hay banners especificado para una seccion, seccion es cualquier parte del campo "section" 
 * */
function existBannerSectionLike($section){
	
	$query = "SELECT count(*) as count FROM  mvial_banners m where section like '%$section%'";
	$sql_resultados = q($query);
	if ($row=mysql_fetch_array($sql_resultados)){		
		if($row['count'] == 0) return false;
		
	}
	return true;	
}

/*
 * Devuelve un array con las imagenes de los mercados y los nombres
 * */
function getArrayOfCatImages(){
	$query = "SELECT * FROM mvial_category m where cat_fatherid = ".ID_CAT_COMPRA." OR cat_fatherid = ".ID_CAT_ALQUILER." OR cat_id = ".ID_CAT_SERVICIOS;	
	$sql_resultados = q($query);
	 
	$matrix = array();
	while ($row=mysql_fetch_array($sql_resultados)){
		$matrix[$row['cat_id']] = array(
			'cat_image'    => $row['cat_image'],
			'cat_fatherid' => $row['cat_fatherid'],
		    'cat_name' => $row['cat_name']		
		);
	}
	return $matrix;	
}

/**
 * Newsletter functions
 */
function getUserFromNewsletterTable($email){
	
	$query = "SELECT `email`, `mercado_vial`, `mercado_transporte`, `mercado_autoelevadores`, `mercado_agricola`, `servicios` FROM mvial_newsletter_suscribers where email='".mysql_escape_string($email)."'";	
	$sql_resultados = q($query);
	 
	//$array = array();
	if ($row=mysql_fetch_array($sql_resultados)){
		$array = array(
			'email'    				=> $row['email'],
			'mercado_vial' 		 	=> $row['mercado_vial'],
		    'mercado_transporte' 	=> $row['mercado_transporte'],
			'mercado_autoelevadores'=> $row['mercado_autoelevadores'],
			'mercado_agricola'		=> $row['mercado_agricola'],
			'servicios'				=> $row['servicios']
				
		);
		return $array;
	}
	return array();
		
}

/*
 * Esta funciuon devuelve todos los usuarios de la base de datos, de la tabla "newsletter_suscribe" que cumplan
 * con las condiciones pasadas en $conditions
 * 
 * $consitions, array de strings donde cada string es de la forma " CAMPO = VALOR" (ejemplo "mercado_agricola=1" o "email like '%sarasa%'")
 * $order, array de orders, cada uno es un string de la forma: "campo tipoOrden", ejemplo: "email ASC"
 * $limit_start: X donde X es  limit X,Y  
 * $limit_count: Y donde Y es  limit X,Y //si limit = 0 trae todos
 * */
function getUsersFromNewsletterTableWhere(array $conditions, array $orders, $limit_start = 0, $limit_count = 200){
	
	$query = "SELECT `email`, `mercado_vial`, `mercado_transporte`, `mercado_autoelevadores`, `mercado_agricola`, `servicios` FROM mvial_newsletter_suscribers ";
	if(!empty($conditions)){
		$first = true;		
		foreach ($conditions as $cond){
			if($first){
				$query .= " where ".$cond." ";
				$first = false;
			}else{
				$query .= " AND ".$cond." ";
			}
				 
		}	
	}
	if(!empty($order)){
		$first = true;		
		foreach ($orders as $order){
			if($first){
				$query .= " order by ".$order." ";
				$first = false;
			}else{
				$query .= " , ".$order." ";
			}
				 
		}
	}
	if(!empty($limit_count))
		$query .= " limit ".$limit_start.",".$limit_count;
	
	
	$sql_resultados = q($query);
	
	$array = array();
	while ($row=mysql_fetch_array($sql_resultados)){
		$array[] = array(
			'email'    				=> $row['email'],
			'mercado_vial' 		 	=> $row['mercado_vial'],
		    'mercado_transporte' 	=> $row['mercado_transporte'],
			'mercado_autoelevadores'=> $row['mercado_autoelevadores'],
			'mercado_agricola'		=> $row['mercado_agricola'],
			'servicios'				=> $row['servicios']
				
		);
	}
	return $array;	
}

/*
 * excepto email, son campos booleanos, se especifican con un 0 o un 1.
 * */
function insertUserInNewsletterTable($email,$mercado_vial, $mercado_transporte, $mercado_autoelevadores, $mercado_agricola, $servicios){
	
	$email = mysql_escape_string($email);
	$query = "INSERT INTO mvial_newsletter_suscribers(`email`, `mercado_vial`, `mercado_transporte`, `mercado_autoelevadores`, `mercado_agricola`, `servicios`) ".
			 " SELECT '$email',$mercado_vial, $mercado_transporte, $mercado_autoelevadores, $mercado_agricola, $servicios from (select 1) aux ".  
			  "where not Exists(select * from mvial_newsletter_suscribers where email='$email')";	
	$resultados = q($query);
	if(mysql_errno()==0) return true;
  	return false;
}
/*
 * excepto email, son campos booleanos, se especifican con un 0 o un 1.
 * */
function updateUserInNewsletterTable($email,$mercado_vial, $mercado_transporte, $mercado_autoelevadores, $mercado_agricola, $servicios){
	
	$email = mysql_escape_string($email);
	$query = "UPDATE mvial_newsletter_suscribers m SET m.`mercado_vial`=$mercado_vial, 
										 m.`mercado_transporte`=$mercado_transporte, 
                                         m.`mercado_autoelevadores`=$mercado_autoelevadores, 
                                         m.`mercado_agricola`=$mercado_agricola, 
                                         m.`servicios`=$servicios
			  WHERE m.`email`='$email'";
	$resultados = q($query);
	if(mysql_errno()==0) return true;
  	return false;
}

/*
 * 
 * */
function deleteUserFromNewsletterTable($email){
	
	$email = mysql_escape_string($email);
	$query = "DELETE FROM mvial_newsletter_suscribers  WHERE `email`='$email'";
	$resultados = q($query);
	if(mysql_errno()==0) return true;
  	return false;
}

function writeNewsIntoFile($content){
	
	$fp = fopen(NEWSLETTER_NEWS_FILE,"w");
	if (!$fp)
			return false;
	else{
		fwrite($fp,str_replace('\"', '"', $content));
		fclose($fp);
	}
	@chmod(NEWSLETTER_NEWS_FILE,0755);
	return true;	
}

function readNewsIntoFile(){
	
	readfile(NEWSLETTER_NEWS_FILE);
	/*$fp = fopen(NEWSLETTER_NEWS_FILE,"r");
	if (!$fp)
			return false;
	else{
		fwrite($fp,$content);
		fclose($fp);
	}
	@chmod(NEWSLETTER_NEWS_FILE,0755);
	return true;*/
}
/*** END NEWSLETTER FUNCTIONS***/

function validPhone($phone){
		
	$phone=ereg_replace("-"," ",$phone);
	if(eregi("^[0-9\+ ]+$",$phone, $regs))
  		return true;
	else
		return false;	
}

function get_user_browser()
{
    $u_agent = $_SERVER['HTTP_USER_AGENT'];
    $ub = '';
    if(preg_match('/MSIE/i',$u_agent))
    {
        $ub = "ie";
    }
    elseif(preg_match('/Firefox/i',$u_agent))
    {
        $ub = "firefox";
    }
    elseif(preg_match('/Safari/i',$u_agent))
    {
        $ub = "safari";
    }
    elseif(preg_match('/Chrome/i',$u_agent))
    {
        $ub = "chrome";
    }
    elseif(preg_match('/Flock/i',$u_agent))
    {
        $ub = "flock";
    }
    elseif(preg_match('/Opera/i',$u_agent))
    {
        $ub = "opera";
    }
   
    return $ub;
}


/**
 * @author: JMR <br/>
 * @desc: Esta función devuelve un array que contiene los links de navegación por página <br/>
 * @params: <br/>
 * $templateLink : String con la URL generica de navegación para un listado dado, solo el offset debería de se modificado para que
 *                 funcione para todos los links de navegación. <br/>
 * $currentPage : Numero de página actual <br/>
 * $amountOfAds : Cantidad de avisos en el listado <br/>
 * $adsPerPage : Avisos por página <br/>
 * $OFFSETTOKEN : Substring constante que será reemplzado por el offset en el template link <br/>
 * */

function generateNavegationPages($templateLink,$currentPage,$amountOfAds,$adsPerPage,$OFFSETTOKEN){
	
	$maxLinks = 12; //este número representa la cantidad de páginas visibles para navegar. SI hay más se msotrarán
	                //puntos suspensivos a la mitad y se completará con las finales.

	$listOfPages = array();
	$totalPages = ceil($amountOfAds/$adsPerPage);
	$half = $maxLinks/2;
	$start = 0;
	$end = $maxLinks;
	
	if($totalPages > $maxLinks){ //Hay más páginas para mostrar que las que entran al pie

		if ($currentPage>$half){ //Sí la pagina actual está más allá de la mitad, de las que se pueden mostrar
			
			if(($currentPage+$half)<$totalPages){ //si la página actual está a más de la mitad de las que se pueden mostrar de distancia de la última
				$start  = $currentPage-$half;
				$end 	= $currentPage+$half;
			}else{ //Está a menos de la mitad de las que se pueden mostrar de la última
				$start  = $totalPages-$maxLinks;
				$end 	= $totalPages;
			}
						
		}
	}
	for($i = $start; $i < $end; $i++){
		
			$listOfPages[$i] = array('url' => str_replace($OFFSETTOKEN, $i*$adsPerPage, $templateLink) , 
								   'name'=>($i+1), 
								   'isCurrent' =>($i == $currentPage) );
	}	

	return $listOfPages;	
}

/**
 * @author: JMR <br/>
 * @desc: Esta función devuelve un String con HTML que es el codigo que representa el contenido de IMAGEN de un aviso, en los listados
 * @params: <br/>
 * $adId: Id del aviso. <br/>
 * $adHasPicture: Booleano, 1 o 0 que indica si el aviso tiene asociado o no una imagen (este campo está en la Base de Datos) <br/> 
 * */

function generateImageLinks($adId,$adHasPicture){
	
	
		$returnValue ="";	
        $url = linkDetail($adId);
	
		if ($adHasPicture)
		{
			// Use real images where possible!
			$lImage=returnThumbnailFromImageFile(getOneImage($adId,"","",""));			

			$returnValue = "<div class=\"thumb\"><a href=\"$url\">";

			$returnValue.= "<img src=\"/images/$lImage\"";
			if ($set_image_program==0)
			{
				$lSizeArray=setImageSize($lImage,getManualSize("thumb"),0);
				$returnValue.= " width=\"".$lSizeArray[0]."\" height=\"".$lSizeArray[1]."\"";
			}
            $returnValue.= " border=\"0\" alt=\"".LA_VIEW_AD."\" title=\"".LA_VIEW_AD."\"  class=\"fakeLinks\" /><input type=\"hidden\" value=\"\" id=\"retlink_$adId\" name=\"return_link\"/>";
            $returnValue .= "</a><div>";
		}
		else 
		{
			$returnValue = "<div class=\"thumb\"><a href=\"$url\">";
			$returnValue.= "<img src=\"/layout_images/no_image_camera.gif\" border=\"0\" alt=\"".LA_VIEW_AD."\" title=\"".LA_VIEW_AD."\" class=\"fakeLinks\"/><input type=\"hidden\" value=\"\" id=\"retlink_$adId\" name=\"return_link\"/></a></div>";
		}
		
		return $returnValue;
}

?>
